package com.cmc.cloud.cmclink.doc.convert;

import com.cmc.cloud.cmclink.doc.api.document.req.so.SoVslvoyUpdateReqDto;
import com.cmc.cloud.cmclink.doc.entity.SoVslvoyDO;
import com.cmc.cloud.cmclink.doc.mq.SoEdiReqVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.sovo.FileUploadRespVo;
import com.cmc.cloud.cmclink.doc.vo.sovo.sovslvoyvo.SoVslvoyCreateReqVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.sovslvoyvo.SoVslvoyRespVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.sovslvoyvo.SoVslvoyUpdateReqVO;
import com.cmc.cloud.cmclink.system.api.api.file.dto.FileUploadRespDTO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 订舱航次路径 Convert
 *
 * @author 招商轮船-管理员
 */
@Mapper
public interface SoVslvoyConvert {

    SoVslvoyConvert INSTANCE = Mappers.getMapper(SoVslvoyConvert.class);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return obj
     */
    SoVslvoyDO convert(SoVslvoyCreateReqVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return obj
     */
    List<SoVslvoyDO> convertBatch(List<SoVslvoyCreateReqVO> bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return obj
     */
    List<SoVslvoyDO> convertBatchUpdate(List<SoVslvoyUpdateReqVO> bean);


    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return obj
     */
    SoVslvoyUpdateReqVO convertUpdate(SoVslvoyRespVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return obj
     */
    List<SoVslvoyDO> convertBatchRespUpdate(List<SoVslvoyRespVO> bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return obj
     */
    SoVslvoyDO convert(SoVslvoyUpdateReqVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean
     * @return obj
     */
    SoVslvoyRespVO convert(SoVslvoyDO bean);

    /**
     * 属性转换 convert
     *
     * @param list list
     * @return obj
     */
    List<SoVslvoyRespVO> convertList(List<SoVslvoyDO> list);

    /**
     * 属性转换 convert
     *
     * @param list list
     * @return obj
     */
    List<SoVslvoyCreateReqVO> convertCreateList(List<SoVslvoyDO> list);

    /**
     * 属性转换 convert
     *
     * @param list list
     * @return obj
     */
    List<SoVslvoyUpdateReqVO> convertUpdateList(List<SoVslvoyDO> list);


    /**
     * 属性转换 convert
     *
     * @param list list
     * @return obj
     */
    List<SoVslvoyDO> convertDoList(List<SoVslvoyRespVO> list);

    /**
     * 属性转换
     *
     * @param soVslvoyUpdateReqDtoList list
     * @return obj List<SoVslvoyUpdateReqVO>
     */
    List<SoVslvoyUpdateReqVO> convertSoVslvoyUpdateReqDto(List<SoVslvoyUpdateReqDto> soVslvoyUpdateReqDtoList);

    /**
     * EDI属性转换
     * @param vslvoyList list
     * @return obj List<SoVslvoyUpdateReqVO>
     */
    List<SoVslvoyUpdateReqVO> ediConvertSoVslvoyUpdateReqDto(List<SoEdiReqVO.Vslvoy> vslvoyList);

    /**
     * 属性转换
     *
     * @param soVslvoyDoList list
     * @return obj
     */
    List<SoVslvoyUpdateReqDto> convertSoVslvoyUpdateReqDtos(List<SoVslvoyDO> soVslvoyDoList);

    /**
     * 属性转换
     *
     * @param data  data
     * @return obj
     */
    FileUploadRespVo fileUploadRespToFileUploadRespVo(FileUploadRespDTO data);
}
